package com.kmzx.one.project.mapper;

import com.github.pagehelper.Page;
import com.kmzx.one.project.entity.ProdSearchHot;
import com.kmzx.one.project.entity.ProdSearchSpell;
import com.kmzx.one.project.entity.ProdSearchUser;
import com.kmzx.one.project.others.dto.ProdOutInfo;
import com.kmzx.one.project.others.dto.ProdSearchHistoryInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

/**
 * @Project one
 * @Author: carol
 * @Date: 2020/8/31-20:21
 */
@Mapper
@Component
public interface ProdSearchMapper {

    /**
     * 增加用户搜索记录
     * @param prodSearchUser
     */
    void insertSearchUser(ProdSearchUser prodSearchUser);

    /**
     * 删除用户搜素记录
     * @param searchId
     * @param userId
     * @param updateTime
     */
    void hiddenSearchUser(@Param("searchId") String searchId, @Param("userId") String userId, @Param("updateTime") Date updateTime);

    /**
     * 批量删除用户搜索记录
     * @param userId
     * @param updateTime
     */
    void batchHiddenSearchUser(@Param("userId") String userId, @Param("updateTime") Date updateTime);

    /**
     * 新增热点记录
     * @param prodSearchHot
     */
    void insertSearchHot(ProdSearchHot prodSearchHot);

    /**
     * 更新热点记录
     * @param prodSearchHot
     */
    void updateSearchHot(ProdSearchHot prodSearchHot);


    void updateSearchUserOne(@Param("userId") String userId, @Param("spellId") String spellId, @Param("updateTime") Date updateTime);

    void updateSearchHotOne(@Param("spellId") String spellId, @Param("updateTime") Date updateTime);

    /**
     * 获取用户的搜索记录
     * @param prodName
     * @param userId
     * @return
     */
    List<ProdSearchUser> selectProdNameSearch(@Param("prodName") String prodName, @Param("userId") String userId);

    List<ProdSearchUser> selectProdNameSearchSpell(@Param("spellId") String spellId, @Param("userId") String userId);

    ProdSearchUser selectProdNameSearch2(@Param("spellId") String spellId, @Param("userId") String userId);

    /**
     * 获取用户的搜索热点
     * @param spellId
     * @return
     */
    ProdSearchHot selectProdSearchHot(@Param("spellId") String spellId);

    /**
     * 更新用户的搜索记录
     * @param id
     * @param updateTime
     */
    void updateProdNameSearch(@Param("id") String id, @Param("updateTime") Date updateTime);

    /**
     * 新增分词记录
     * @param prodSearchSpell
     */
    void insertSearchSpell(ProdSearchSpell prodSearchSpell);

    /**
     * 搜索历史
     * @param userId
     * @return
     */
    List<ProdSearchHistoryInfo> selectSearchHistoryInfo(@Param("userId") String userId);

    /**
     * 热搜词汇
     * @return
     */
    List<ProdSearchHistoryInfo> selectSearchHotInfo();

    /**
     * 批量更新用户的搜搜记录
     * @param userId
     * @param updateTime
     * @param list
     */
    void batchBanSearchUser(@Param("userId") String userId, @Param("updateTime") Date updateTime, @Param("list") List<String> list);

    /**
     * 查看分词
     * @param prodName
     * @return
     */
    List<ProdSearchSpell> findExactWords(@Param("prodName") String prodName);

    /**
     * 查询商品
     * @param list
     * @return
     */
    Page<ProdOutInfo> findSpellProd(@Param("list") List<String> list, @Param("sortKinds") Integer sortKinds);


    Page<ProdOutInfo> findSpellProdSells(@Param("list") List<String> list, @Param("sortKinds") Integer sortKinds);

    Page<ProdOutInfo> findSpellProdPrice(@Param("list") List<String> list, @Param("sortKinds") Integer sortKinds);

    Page<ProdOutInfo> findSpellProdTime(@Param("list") List<String> list, @Param("sortKinds") Integer sortKinds);

}
